package com.itheima.aop;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;

/**
 * 在切面类试一下自定义注解
 */
@Slf4j
@Aspect
@Component
public class MyAspect7 {

    /**
     * annotation 切入点表达式
     *
     * - 基于注解的方式来匹配切入点方法。这种方式虽然多一步操作，我们需要自定义一个注解，但是相对来比较灵活。
     * 我们需要匹配哪个方法，就在方法上加上对应的注解就可以了
     */
    @Pointcut("@annotation(com.itheima.aop.Mylog)")
    private void pt(){}

    //前置通知
//    @Before("@annotation(com.itheima.aop.Mylog)")
    @Before("pt()")
    public void before()
    {
        log.info("MyAspect7 ...before ...");

    }

    //后置通知
    @After("@annotation(com.itheima.aop.Mylog)")     //为什么aop.匹配只能匹配到Mylog？
    public void after(){
        log.info("MyAspect7 -> after ...");
    }
}
